<html>
    <head>
        <title>数据过滤器：禁用多租户过滤</title>
    </head>
    <body>
        <script>
            /*
                3、数据过滤： 禁用多租户过滤器

                                                如前所述，ABP使用数据过滤系统处理租户之间的数据隔离。

                                                在某些情况下，您可能希望禁用它并对所有数据执行查询，而不过滤当前租户。

                                                eg: 获取数据库中的产品计数，包括所有租户的所有产品：

                                                            using System;
                                                            using System.Threading.Tasks;
                                                            using Volo.Abp.Data;
                                                            using Volo.Abp.Domain.Repositories;
                                                            using Volo.Abp.Domain.Services;
                                                            using Volo.Abp.MultiTenancy;

                                                            namespace MultiTenancyDemo.Products
                                                            {
                                                                public class ProductManager : DomainService
                                                                {
                                                                    private readonly IRepository<Product, Guid> _productRepository;
                                                                    private readonly IDataFilter _dataFilter;

                                                                    public ProductManager(
                                                                        IRepository<Product, Guid> productRepository,
                                                                        IDataFilter dataFilter)
                                                                    {
                                                                        _productRepository = productRepository;
                                                                        _dataFilter = dataFilter;
                                                                    }

                                                                    public async Task<long> GetProductCountAsync()
                                                                    {
                                                                        using (_dataFilter.Disable<IMultiTenant>())  // 在特定作用域范围内禁用多租户过滤器
                                                                        {
                                                                            return await _productRepository.GetCountAsync();
                                                                        }
                                                                    }
                                                                }
                                                            }

                                                有关更多信息，请参阅数据过滤文档： https://abp.io/docs/latest/framework/infrastructure/data-filtering

                                                        
                                                备注：

                                                    请注意，如果您的租户有单独的数据库，则此方法将不起作用，因为没有内置方法可以在单个数据库查询中从多个数据库进行查询。

                                                    如果需要，您应该自己处理。
            */
        </script>
    </body>
</html>